import time

from django.http import JsonResponse
from django.shortcuts import render, HttpResponse, redirect
from web import models
from web.forms.project import ProjectModelForm
from utils.tencent.cos import create_bucket


def project_list(request):
    # print(request.tracer.user)
    # print(request.tracer.price_policy)
    if request.method == "GET":
        """
        1、从数据库获取两部分数据
	        我创建的所有项目：已星标、未星标
	        我参与的所有项目：已星标、未星标
        2、提取已星标
	        列表 = 循环 【我创建的所有的项目】 + 【我参与的所有项目】把已星标的数据提取
        得到三个列表：星标、创建、参与
        """
        project_dict = {'star': [], 'my': [], 'join': []}

        my_project_list = models.Project.objects.filter(creator=request.tracer.user)
        for row in my_project_list:
            if row.star:
                project_dict['star'].append({'value': row, 'type': 'my'})
            else:
                project_dict['my'].append(row)

        my_participant_list = models.Participant.objects.filter(user=request.tracer.user)
        for item in my_participant_list:
            if item.star:
                project_dict['star'].append({'value': item.project, 'type': 'join'})
            else:
                project_dict['join'].append(item.project)
        form = ProjectModelForm(request)
        return render(request, 'project_list.html', {'form': form, 'project_dict': project_dict})
    form = ProjectModelForm(request, data=request.POST)
    if form.is_valid():
        # + creator
        name = form.cleaned_data['name']
        # 1、为项目创建桶
        bucket = "{}-{}-1314200773".format(request.tracer.user.mobile_phone, str(int(time.time())))
        region = "ap-chengdu"
        create_bucket(bucket)

        # 2、创建项目
        form.instance.bucket = bucket
        form.instance.region = region

        form.instance.creator = request.tracer.user

        instance = form.save()

        # 3、初始化项目问题类型
        issues_type_obj_list = []
        for item in models.IssuesType.PROJECT_INIT_LIST:  # ['任务','功能','Bug']
            issues_type_obj_list.append(models.IssuesType(project=instance,title=item))
        test = models.IssuesType.objects.bulk_create(issues_type_obj_list)


        return JsonResponse({'status': True})
    return JsonResponse({'status': False, 'error': form.errors})


def project_star(request, project_type, project_id):
    if project_type == 'my':
        models.Project.objects.filter(id=project_id, creator=request.tracer.user).update(star=True)
        return redirect('project_list')
    elif project_type == 'join':
        models.Participant.objects.filter(project_id=project_id, user=request.tracer.user).update(star=True)
        return redirect('project_list')
    else:
        return redirect('project_list')


def project_unstar(request, project_type, project_id):
    """取消星标"""
    if project_type == 'my':
        models.Project.objects.filter(id=project_id, creator=request.tracer.user).update(star=False)
        return redirect('project_list')
    if project_type == 'join':
        models.Participant.objects.filter(project_id=project_id, user=request.tracer.user).update(star=False)
        return redirect('project_list')
    return HttpResponse('请求错误')
